package ar.edu.unq.mongodbexample.homes;

import java.util.List;

import ar.edu.unq.mongodbexample.model.Student;
import ar.edu.unq.mongodbexample.persistence.MongoDBManager;

import com.google.code.morphia.dao.BasicDAO;
import com.google.code.morphia.query.Query;

/**
 * Define la Home para Student
 * 
 * @author Nicolas Faure
 */
public class StudentHome extends BasicDAO<Student, Integer> implements IHome<Student> {
    public StudentHome() {
        super(Student.class, MongoDBManager.getInstance().getDataStore());
        MongoDBManager.getInstance().getMorphia().map(Student.class);

    }
    /**
     * Persiste una coleccion de entidades y retorna el numero de entidades que fallaron al grabarse
     * @author CCEJAS
     */
    public int saveAll(List<Student> students){
    	int notSaved=0;
    	for(Student student:students){
    		try{
    			this.save(student);
    		}
    		catch (Exception e) {
				notSaved=notSaved+1;
			}
    	}
    	return notSaved;
    }
    /**
     * Busca una entidad con un numero de dni especifico
     * @author CCEJAS
     */
    public Student findById(Object dni){
		return (Student) ds.get(Student.class,dni);
    }
    /**
     * Retorna todas las entidades
     * @author CCEJAS
     */
    public List<Student> getAll(){
		return ds.find(Student.class).asList();
    }
    
    /**
     * Busca las entidades del nombre pasado como parametro
     * @author CCEJAS
     */
    public List<Student> findAllByName(String pattern){
    	Query<Student> query =ds.createQuery(Student.class).field("name").equal(pattern); 
		return query.asList();
    }    
}
